﻿/* **************************************************************************
 *
 * Copyright 2007-2010 Jeff Hardy
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * *************************************************************************/

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Web.Management.Server;

using System.Reflection;

internal static class AssemblyRef
{
    private static string client;

    internal static string Client
    {
        get
        {
            if (client == null)
            {
                AssemblyName assemblyName = typeof(AssemblyRef).Assembly.GetName();
                client = assemblyName.FullName.Replace(assemblyName.Name, "NWSGI.ManagementClient");
            }

            return client;
        }
    }
}

namespace NWSGI.Management
{
    internal class NwsgiModuleProvider : Microsoft.Web.Management.Server.ConfigurationModuleProvider
    {
        public override ModuleDefinition GetModuleDefinition(IManagementContext context)
        {
            return new ModuleDefinition(base.Name, "NWSGI.ManagementClient.NwsgiModule, " + AssemblyRef.Client);
        }

        protected sealed override string ConfigurationSectionName
        {
            get { return WsgiSection.SectionName; }
        }

        public override string FriendlyName
        {
            get { return "NWSGI"; }
        }

        public override Type ServiceType
        {
            get
            {
                return typeof(NwsgiModuleService);
            }
        }

        public override bool SupportsScope(ManagementScope scope)
        {
            return true;
        }
    }
}
